Eye diagrams are a conventional format for representing parametric information about signals, and especially about digital signals. Various prior art eye diagram testers are known, but we shall call the technique described in “METHOD AND APPARATUS FOR PERFORMING EYE DIAGRAM MEASUREMENTS” and “COMPOSITE EYE DIAGRAMS” (which is an agreeable method for use herein), an Eye Diagram Analyzer, or EDA for short.
A modern eye diagram for a digital signal is not so much a trace formed continuously in the time domain (ala an analog oscilloscope), as it is an “eye” shape composed of closely spaced points (displayed dots, or illuminated pixels) representing many individual measurement samples [which are (time, voltage) pairs] taken upon separate instances of a signal occurring on a channel of interest, and which were then stored in a memory. Each measurement sample contributes to a displayed pixel. The eye shape appears to be continuous because the collection of pixels is rather dense, and because the signal is sampled at a large number of nearly adjacent locations.
In an eye diagram, an example of which is shown in FIG. 2, the vertical axis is voltage and the horizontal axis represents the differences in time (i.e., various offsets) between some reference event and the locations for the measurement samples. The reference event represents directly, or through some fixed delay, the expected point in time when the value of an applied data signal would be captured by some receiving circuit in an SUT (System Under Test). The reference event is generally an edge of a clock signal in the system under test, and in any event, is derived from an application of the SUT's clock to the Eye Diagram Analyzer. The time axis will generally have enough length to depict one complete eye-shape (cycle of an SUT signal) centered about the reference event, with sometimes perhaps several additional eyes (cycles) before and after.
Different (X, Y) regions within a (sample) space containing an eye diagram represent different “measurement points” that are combinations of time (an offset from the reference event) and voltage (that the signal might exhibit). What the example Eye Diagram Analyzer measures is the number of times, out of a counted number of clock cycles, that the signal on the channel being monitored passed through a selected measurement point. Then another measurement point is selected, and the process repeated until there are enough measurement points to construct an eye diagram of the desired resolution. Points along the visible trace of the eye diagram describe something about those (time, voltage) combinations that were observed to actually occur in the data signal under test. The value of a (time, voltage) combination is, of course, represented by its location in the presented eye diagram, but the color or intensity of the measured result can be determined in a way that assists in appreciating some additional relevant aspect of the measured data (frequently involving a question beginning “How often does . . . ?”). The range over which the measurement points are acquired is called a “sample space” and is defined during a measurement set-up operation. When using the example Eye Diagram Analyzer, we define the sample space and the resolution for neighboring measurement points first, start the measurement and then let the analyzer figure out later how to ascribe values to the pixels of the display. The “display” is, of course, an arbitrary graphic output device such as a printer or a window of some as yet unknown size in a window manager for a computer operating system (e.g., an X Window in X11).
The EDA of the incorporated “METHOD AND APPARATUS FOR PERFORMING EYE DIAGRAM MEASUREMENTS” operates by applying the clock signal from the SUT to a comparator circuit (to clean it up) whose output is then delayed by a convenient amount, say about a half cycle. The data signals to be measured are similarly cleaned up and delayed by a selected variable amount that ranges on either side of the delay used for the clock signal. The cleaned up and delayed clock is then the event reference mentioned above, and is used to determine the relative location (the selected offset) at which the individually threshold-compared-and-then-delayed data signals (the SUT data channels) are sampled for voltage. (There is also another embodiment for the EDA wherein the delays for the data signals are held constant (perhaps after being aligned for skew) while the reference delay is varied.)
This sampling of the individually threshold-compared-and-then-delayed data signals is actually two comparisons (say, greater than or equal to) performed twice in rapid succession, a very brief (but selectable) amount of time apart. If these two successive comparisons are different, then the input signal transitioned through the voltage region of interest, and we call this a hit. This is the manner of sampling that accomplishes the taking of the (time, voltage) pairs that are the basic data of the eye diagram measurement, and it is an alternative to digitizing with a conventional Analog-to-Digital Converter (ADC). We use it as an alternative to ADCs (analog to Digital Converters) because it works at the data rates of interest and is affordable considering the high number of channels (perhaps >>100) to which it is to be simultaneously applied. We have nothing against ADCs, but for high data rates they tend to be large, expensive, and dissipate a lot of power. We are attracted to alternatives that promise small size, are inexpensive and easy on power dissipation, while still operating at high data rates.
Different sampling voltages are obtained by varying the (staggered) comparison thresholds for the data signals. In one embodiment of the example EDA different times are obtained by varying the amount of delay in the data channel path, while leaving the clock signal path essentially fixed. In another embodiment the delay in the data channels is held constant (and preferably at a low value) and the delay in the clock signal path is varied. Skew between data channels may be removed by various techniques.
It is typical for an Eye Diagram Analyzer to perform measurements simultaneously on a plurality of different data signals, which we shall call channels. The number of hits at each measurement point is recorded in a data structure that can be indexed in a way that corresponds to the dimensions of the sample space (i.e., by time and by voltage). There can be one data structure per channel, or alternatively, a larger more complicated data structure that is also indexed by channel. The measurement proceeds by taking samples and filling the data structure, while at the same time the contents of the data structure(s) are processed to create the emerging eye diagram represented by the ever increasing amount of data in the data structure.
It is often the case that the utility of an eye diagram is needed for characterizing or discovering circumstances that are both erroneous and very occasional. It is also the case that some SUTs have a great many channels that are subject to investigation. Some busses have hundreds of member signals, for example. When faced with such circumstances, the “luxury” of having one individual eye diagram trace per SUT signal becomes an oppressive burden. (The idea is that there can easily be too many traces to view together for practical comparison, leading to a severely frustrated operator.)
Accordingly, another tool is needed to assist in eye diagram analysis for situations involving a large number of channels. Let us call the eye diagram for an individual channel a “component” eye diagram. The needed tool is the merging into one combined eye diagram presentation, for a useful grouping of related signals, of those separate component eye diagrams. Perhaps this is as simple as taking all the signals together as one single group and producing a single combined eye diagram from the merged data. Then we might simply combine them as if they were being stacked on top of one another, so to speak. That is, create a resulting eye diagram that is the superposition of the component eye diagrams. Alternatively, the signals of interest might, for timing or other signal format reasons, be construed as belonging to some family for one group and to a different family for another group. In that case we are inclined to consider each group separately, and then produce two separate combined eye diagrams, each of which corresponds to one of the groups. In any event, the operator can instruct the EDA to merge the data of individual eye diagrams for a specified plurality (family) of signals into one combined eye diagram. So now we have a combined eye diagram that probably has a fat trace (indicating that, as expected, not all signals have simultaneous and identical rise times, voltage levels, etc.). Independent of that, we now expect that, having merged everything together, if there is something unusual going on, even if only occasionally for just one channel, we will, in principle, be able to see it.
We shall term such a combined eye diagram, created from the merging of data for individual component eye diagrams, a “composite” eye diagram. It will be appreciated that, given the same channels and measurement parameters, no special activity is needed during the measurement per se to produce a composite eye diagram: the various channels are still measured individually, as before, and it is their corresponding data structure contents that are combined to produce the actual composite eye diagram. Indeed, the forming of composite eye diagrams can be a post processing operation performed after data acquisition, and as such, might be an afterthought, or might be subsequently variously repeated on the same acquired data according to different analysis paradigms newly decided upon as various results are indicated.
So, we have arrived at the following place. We have an instrument for measuring a large number of data signals and producing composite eye diagrams. It will be appreciated that the task of interpreting the salient features of a composite eye diagram of say, sixty-four channels, can still be a challenging exercise. In a previous Application we have addressed the issue of discovering which channel(s) is (are) responsible for some “notable aspect” of the composite eye diagram. That is fine as far as it goes, but there are additional surrounding circumstances that, if we knew them, might help us gain a more informed interpretation of what some such notable aspect of the composite means, or does not mean. In other words, those surrounding circumstances can help us to understand why that feature in the composite eye diagram is there.
An “interesting part” or “notable circumstance” in a composite eye diagram is most probably some part thereof that is significantly outside the expected boundary of an ideal eye diagram. That is, it is indicated by shape, or perhaps by the presence of certain colors in an unusual location of the shape. The immediate implication is that not all the channels are behaving in the same way. A cluster of issues can be addressed for any such interesting part of a composite eye diagram, but at root is the question: Is there a plurality of channels that are all misbehaving the same way? If we knew that, we could proceed to other questions, such as: Are there patterns hidden within this really ugly composite eye diagram? Are there groups of channels that have different patterns of misbehavior? Is the misbehavior constant? Let us take another step in this direction. Suppose we reformulated the composite eye diagram to “remove” certain of the “errors.” Would the result help us understand where those errors are coming from, help us interpret their probable meaning, and help us better evaluate the actual operation of the System Under Test? Might such information alter our opinion of SUT behavior? What can an eye diagram analyzer do to help us answer these questions and better understand what is going on in the SUT?